package org.zjt.scala.book

/**
  *
  * Description:
  *
  *   过程（无等号，无返回值）、
  *   无括号 (无形参)
  *   函数生成函数对象、
  *   方法调用的化简 （对象   方法名   参数）、
  *   无++ -- 等（只有+=）、
  *   对象apply方法
  *
  *
  * @author juntao.zhang
  *         Date: 2018-06-26 上午10:32
  * @see
  */
class Chapter1 {


  /**
    * 过程: 没有返回值的方法。花括号前无 = 。
    */
  def process {
    println("process 结构，非方法（花括号前无等号） + 化简了无形参括号")
  }

  def process1() {
    println("process1 结构，非方法（花括号前无等号）")
  }


  /**
    * 无括号的（无形参）返回一个 PartialFunction对象，该对象用括号执行函数中的apply方法
    * @return
    */
  def receive:PartialFunction[String,Unit] = {
    case "printit" => println("-------printit------")
    case _ => println("undefined")
  }




}


object Chapter1 extends App {
  var chapter = new Chapter1();
  chapter.process
  chapter.process1()


  /**
    * chapter.receive 返回一个 PartialFunction 对象。apply 方法执行方法内部的结构
    */
  chapter.receive.apply("printit")

  /**applyOrElse 当应用不存在时候，增加闭包的默认值增加闭包**/
  chapter.receive.applyOrElse("sss", (x:String)  => println(x))

  /** () -> apply()    **/
  chapter.receive("sss")

  /** 对象 方法名  参数 **/
  chapter receive "ssss"


}